+2007-01-01 Matthias Clasen <mclasen@redhat.com>
+
+ * gtk/gtkscrolledwindow.h:
+ * gtk/gtkscrolledwindow.c: Only handle key bindings
+ for scrolling if the scrollbars are visible.
+ (#340135, Christian Persch)
+
2007-01-01 Matthias Clasen <mclasen@redhat.com>
* gtk/gtktextview.c (gtk_text_view_scroll_hpages):
gboolean include_internals,
GtkCallback callback,
gpointer callback_data);
-static void gtk_scrolled_window_scroll_child (GtkScrolledWindow *scrolled_window,
+static gboolean gtk_scrolled_window_scroll_child (GtkScrolledWindow *scrolled_window,
GtkScrollType scroll,
gboolean horizontal);
static void gtk_scrolled_window_move_focus_out (GtkScrolledWindow *scrolled_window,
G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET (GtkScrolledWindowClass, scroll_child),
NULL, NULL,
- _gtk_marshal_VOID__ENUM_BOOLEAN,
- G_TYPE_NONE, 2,
+ _gtk_marshal_BOOLEAN__ENUM_BOOLEAN,
+ G_TYPE_BOOLEAN, 2,
GTK_TYPE_SCROLL_TYPE,
G_TYPE_BOOLEAN);
signals[MOVE_FOCUS_OUT] =
}
}
-static void
+static gboolean
gtk_scrolled_window_scroll_child (GtkScrolledWindow *scrolled_window,
GtkScrollType scroll,
gboolean horizontal)
break;
default:
g_warning ("Invalid scroll type %u for GtkSpinButton::change-value", scroll);
- return;
+ return FALSE;
}
+ if ((horizontal && (!scrolled_window->hscrollbar || !scrolled_window->hscrollbar_visible)) ||
+ (!horizontal && (!scrolled_window->vscrollbar || !scrolled_window->vscrollbar_visible)))
+ return FALSE;
+
if (horizontal)
{
if (scrolled_window->hscrollbar)
value = CLAMP (value, adjustment->lower, adjustment->upper - adjustment->page_size);
gtk_adjustment_set_value (adjustment, value);
+
+ return TRUE;
}
+
+ return FALSE;
}
static void
* no horizontal/vertical variants for GTK_SCROLL_START/END,
* so we have to add an additional boolean flag.
*/
- void (*scroll_child) (GtkScrolledWindow *scrolled_window,
- GtkScrollType scroll,
- gboolean horizontal);
+ gboolean (*scroll_child) (GtkScrolledWindow *scrolled_window,
+ GtkScrollType scroll,
+ gboolean horizontal);
void (* move_focus_out) (GtkScrolledWindow *scrolled_window,
GtkDirectionType direction);